import { defineStore } from 'pinia'
import { getConfig } from '@/api/app'

interface AppSate {
    config: Record<string, any>
}
// 根据 Pinia 的 defineStore 方法，它需要至少两个参数，一个是 store 的 id，另一个是 store 的配置对象。
// 因此，我们需要添加 id 和配置对象。
export const useAppStore = defineStore('appStore', {
    id: 'appStore',
    state: (): AppSate => ({
        config: {}
    }),
    getters: {
        getWebsite: (state) => state.config || {},
        getCopyrightConfig: (state) => state.config.copyright || [],
        getQrcodeConfig: (state) => state.config.qrcode || {},
        getAdminUrl: (state) => state.config.admin_url,
    },
    actions: {
        async getConfig(runFun:Function) {
            const config = await getConfig();
            runFun(config)
            
            // 确保 config 是一个对象
            if (typeof config === 'object' && config !== null) {
                this.config = config as Record<string, any>;
                
            } else {
                // 如果 config 不是对象，将其设置为空对象
                this.config = {};
            }
            console.log('config-----------', this.config)
        }
    }
})
